Redis Pub/Sub (Publish/Subscribe) হল একটি messaging প্যাটার্ন যা রেডিসের মাধ্যমে রিয়েল-টাইম মেসেজিং সিস্টেম তৈরি করতে ব্যবহৃত হয়। Pub/Sub প্যাটার্নে, একটি Publisher মেসেজ প্রকাশ করে এবং এক বা একাধিক Subscriber সেই মেসেজ গ্রহণ করে। Redis Pub/Sub ব্যবহার করে আপনি একটি চ্যানেল তৈরি করতে পারেন যেখানে মেসেজ পাঠানো এবং গ্রহণ করা হয়।
Redis Pub/Sub Channels তৈরি করার ধারণা
Redis Pub/Sub ব্যবহার করতে, একটি বা একাধিক ক্লায়েন্ট Publisher হিসেবে মেসেজ প্রেরণ করবে এবং অন্য ক্লায়েন্ট Subscriber হিসেবে সেই মেসেজ গ্রহণ করবে। চ্যানেলগুলো Redis-এ ডায়নামিকভাবে তৈরি হয়, অর্থাৎ আপনাকে চ্যানেল তৈরি করার জন্য কোনো পূর্বনির্ধারিত কাজ করতে হয় না, এটি সম্পূর্ণরূপে রানটাইমে পরিচালিত হয়।
Redis Pub/Sub-এর মূল কমান্ডগুলো হলো:
- PUBLISH - Publisher চ্যানেলে মেসেজ প্রেরণ করে।
- SUBSCRIBE - Subscriber চ্যানেলে মেসেজ গ্রহণ করার জন্য সাবস্ক্রাইব করে।
- UNSUBSCRIBE - Subscriber চ্যানেল থেকে সাবস্ক্রাইব বাতিল করে।
Redis Pub/Sub Channels তৈরি এবং ব্যবহারের জন্য উদাহরণ
১. Redis CLI-তে Pub/Sub ব্যবহারের জন্য নির্দেশনা
Publisher (PUBLISH)
- Redis CLI-এ একটি চ্যানেলে মেসেজ পাঠানোর জন্য
PUBLISHকমান্ড ব্যবহার করতে হবে। - উদাহরণস্বরূপ, আমরা একটি চ্যানেল
newsতে একটি মেসেজ পাঠাবো:
PUBLISH news "Breaking news: Redis Pub/Sub in action!"- Redis CLI-এ একটি চ্যানেলে মেসেজ পাঠানোর জন্য
Subscriber (SUBSCRIBE)
- একটি চ্যানেলে মেসেজ গ্রহণ করার জন্য
SUBSCRIBEকমান্ড ব্যবহার করতে হবে। - আপনি যদি
newsচ্যানেলে সাবস্ক্রাইব করতে চান, তবে নিচের কমান্ডটি ব্যবহার করুন:
SUBSCRIBE news- একটি চ্যানেলে মেসেজ গ্রহণ করার জন্য
একাধিক চ্যানেলে সাবস্ক্রাইব করা
- আপনি একাধিক চ্যানেলে সাবস্ক্রাইব করতে পারেন। উদাহরণস্বরূপ:
SUBSCRIBE news sportsUnsubscribe (UNSUBSCRIBE)
- আপনি একটি বা একাধিক চ্যানেল থেকে সাবস্ক্রাইব বাতিল করতে
UNSUBSCRIBEকমান্ড ব্যবহার করতে পারেন:
UNSUBSCRIBE news- আপনি একটি বা একাধিক চ্যানেল থেকে সাবস্ক্রাইব বাতিল করতে
২. Python-এ Redis Pub/Sub ব্যবহার
Redis Pub/Sub ব্যবহারের জন্য Python-এ redis-py লাইব্রেরি ব্যবহার করা হয়। প্রথমে, লাইব্রেরি ইনস্টল করতে হবে:
pip install redis
Publisher কোড (Python)
import redis
# Redis ক্লায়েন্ট তৈরি
r = redis.Redis()
# মেসেজ প্রকাশ (Publish)
channel = 'news'
message = 'Breaking news: Redis Pub/Sub in Python!'
r.publish(channel, message)
print(f"Message '{message}' published to channel {channel}")
Subscriber কোড (Python)
import redis
# Redis ক্লায়েন্ট তৈরি
r = redis.Redis()
# চ্যানেল সাবস্ক্রাইব করা
pubsub = r.pubsub()
pubsub.subscribe('news')
print("Subscribed to 'news' channel")
# মেসেজ গ্রহণ করা
for message in pubsub.listen():
print(message)
if message['type'] == 'message':
print(f"Received message: {message['data']}")
- Publisher কোডে
r.publish(channel, message)কমান্ড ব্যবহার করা হয়েছে যা চ্যানেলnewsতে মেসেজ পাঠাবে। - Subscriber কোডে
pubsub.subscribe('news')দিয়ে চ্যানেলে সাবস্ক্রাইব করা হয়েছে এবংpubsub.listen()ব্যবহার করে মেসেজ শুনা হচ্ছে।
৩. Node.js-এ Redis Pub/Sub ব্যবহার
Node.js-এ Redis Pub/Sub ব্যবহারের জন্য ioredis লাইব্রেরি ব্যবহার করা হয়। প্রথমে, এই লাইব্রেরি ইনস্টল করতে হবে:
npm install ioredis
Publisher কোড (Node.js)
const Redis = require('ioredis');
const redis = new Redis();
// মেসেজ প্রকাশ (Publish)
const channel = 'news';
const message = 'Breaking news: Redis Pub/Sub in Node.js!';
redis.publish(channel, message)
.then(() => {
console.log(`Message '${message}' published to channel ${channel}`);
});
Subscriber কোড (Node.js)
const Redis = require('ioredis');
const redis = new Redis();
// চ্যানেল সাবস্ক্রাইব করা
const channel = 'news';
redis.subscribe(channel, (err, count) => {
if (err) {
console.error("Subscription failed:", err);
} else {
console.log(`Subscribed to ${channel} channel`);
}
});
// মেসেজ গ্রহণ করা
redis.on('message', (channel, message) => {
console.log(`Received message: ${message} from channel ${channel}`);
});
- Publisher কোডে
redis.publish(channel, message)কমান্ড ব্যবহার করা হয়েছে যা চ্যানেলnewsতে মেসেজ পাঠাবে। - Subscriber কোডে
redis.subscribe(channel)দিয়ে চ্যানেলে সাবস্ক্রাইব করা হয়েছে এবংredis.on('message')দিয়ে মেসেজ গ্রহণ করা হচ্ছে।
৪. Redis Pub/Sub এর সুবিধা
- রিয়েল-টাইম মেসেজিং: Pub/Sub প্যাটার্ন রিয়েল-টাইম মেসেজিংয়ের জন্য উপযুক্ত।
- ডিসকনফিগারযোগ্য: Redis Pub/Sub ডায়নামিকভাবে চ্যানেল তৈরি করতে পারে, তাই এটি খুবই ফ্লেক্সিবল।
- বিভিন্ন ব্যবহার: চ্যাট অ্যাপ্লিকেশন, লাইভ আপডেট, অ্যালার্ট সিস্টেম, ফিড আপডেট, ইত্যাদিতে এটি ব্যবহৃত হতে পারে।
- অর্ডার বিহীন: Pub/Sub মেসেজগুলি অর্ডার বিহীনভাবে সাবস্ক্রাইবারদের কাছে পাঠানো হয়।
সারাংশ
Redis Pub/Sub হল একটি শক্তিশালী মেসেজিং প্যাটার্ন যা রেডিস সার্ভারের মাধ্যমে রিয়েল-টাইম মেসেজ আদান প্রদান করতে ব্যবহৃত হয়। আপনি চ্যানেল তৈরি করে এবং মেসেজ প্রকাশ ও গ্রহণ করে বিভিন্ন ধরনের রিয়েল-টাইম অ্যাপ্লিকেশন তৈরি করতে পারেন। Redis Pub/Sub বিভিন্ন প্রোগ্রামিং ভাষায় সমর্থিত এবং এটি খুবই সহজে ব্যবহারযোগ্য।
Read more